package 设计模式.二工厂模式.工厂方法模式.order;

import 设计模式.二工厂模式.简单工厂模式.pizza.Pizza;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public abstract class OrderPizza {
    //构造器
    public OrderPizza() {
        do {
            String orderType = getType(); //订购披萨的类型
            Pizza pizza = createPizza(orderType);
            pizza.prepare();
            pizza.bake();
            pizza.cut();
            pizza.box();
        } while (true);
    }

    //定义一个抽象方法createPizza,让各自工厂子类自己实现
    abstract Pizza createPizza(String orderType);

    //写一个方法，可以获取客户希望订购胡披萨种类
    private String getType() {
        try {
            BufferedReader strin = new BufferedReader(new InputStreamReader(System.in));
            System.out.println("input pizza type:");
            String str = strin.readLine();
            return str;
        } catch (IOException e) {
            e.printStackTrace();
            return "";
        }
    }
}
